using System.Collections;
using System.Collections.Generic;

namespace Is.Ex
{
    public static class ContainsExtensions
    {
        public static ContainsEnumerable<T> Contains<T>(this T[] e)
        {
            return new ContainsEnumerable<T>(e, false);
        }

        public static ContainsEnumerable<T> Contains<T>(this List<T> e)
        {
            return new ContainsEnumerable<T>(e, false);
        }

        public static ContainsEnumerable<T> Contains<T>(this IList<T> e)
        {
            return new ContainsEnumerable<T>(e, false);
        }

        public static ContainsEnumerable<T> Contains<T>(this IEnumerable<T> e)
        {
            return new ContainsEnumerable<T>(e, false);
        }

        public static ContainsDictionary<TKey, TValue> Contains<TKey, TValue>(this IEnumerable<KeyValuePair<TKey, TValue>> d)
        {
            return new ContainsDictionary<TKey, TValue>(d, false);
        }

        public static ContainsDictionary<TKey, TValue> Contains<TKey, TValue>(this IDictionary<TKey, TValue> d)
        {
            return new ContainsDictionary<TKey, TValue>(d, false);
        }

        public static ContainsCollection Contains(this ICollection e)
        {
            return new ContainsCollection(e, false);
        }
    }
}